this 是执行上下文环境的一个属性,而不是某个变量对象的属性。因此:
- 当代码中使用了 this,这个 this 的值就直接从执行的上下文中获取了,而不会从作用域链中搜寻
- this 的值只取决进入上下文时的情况
几种情况:
- 箭头函数 this:
MDN官方文档里面描述箭头函数this定义的时候,描述的是“箭头函数不会创建自己的this,它只会从自己的作用域链的上一层继承this。",所以可以理解为,箭头函数的this就是上一层函数作用域或者全局作用域的this。或者理解为:箭头函数不会创建自己的this,它的this是在函数创建时确定的而不是在函数调用时确定的,函数创建时所在的执行上下文的this即为箭头函数的this。
- 函数调用 this
指向 window
- 方法调用(作为对象的方法) this
指向这个对象
- 构造函数 this
- 用new时,this指向创建的对象
- 直接调用时,非严格模式this指定window,严格模式this指定undefined
- call、apply、bind
指向第一个参数所指向的对象